package com.zimin.cloud.user.biz;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zimin.cloud.mine.pojo.user.business.UserBO;
import com.zimin.cloud.mine.pojo.user.business.UserInfoBO;
import com.zimin.cloud.mine.pojo.user.view.UserInfoVO;
import com.zimin.cloud.mine.pojo.user.view.UserVO;
import com.zimin.cloud.user.pojo.entity.UserInfo;
import com.zimin.cloud.user.service.IUserService;
import com.zimin.shared.pojo.PageVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 用户角色关联表 业务对象
 * </p>
 *
 * @author zimin
 * @since 2022-06-14 15:53
 */
public interface IUserBiz extends IUserService {


    /**
     * <p>新增/注册用户</p>
     *
     * @param userBO 用户的业务对象
     * @return boolean
     * @since 2022-06-20 10:21:49
     */
    boolean addUser(UserBO userBO);

    /**
     * <p>用户登录</p>
     *
     * @param userBO 用户对象
     * @return java.lang.String
     * @since 2022-06-21 11:37:16
     */
    String login(UserBO userBO) throws Exception;

    /**
     * <p>获取用户详情</p>
     *
     * @param userId 用户ID
     * @return com.zimin.cloud.mine.pojo.user.view.UserInfoVO
     * @since 2022-06-22 17:25:06
     */
    UserVO getUserInfo(String userId);

    /**
     * <p>更新用户信息</p>
     *
     * @param userBO 用户对象
     * @return boolean
     * @since 2022-06-25 21:53:20
     */
    boolean updateUserInfos(UserInfoBO userInfoBO);

    /**
     * <p>分页获取用户详情</p>
     *
     * @param page       分页对象
     * @param userInfoBO 查询对象
     * @return java.util.List<com.zimin.cloud.mine.pojo.user.view.UserInfoVO>
     * @since 2022-06-28 21:56:12
     */
    PageVO<UserInfoVO> pageListUserInfos(Page<UserInfo> page, UserInfoBO userInfoBO);

    Map<String, Object> loginForDts(UserBO userBO) throws Exception;

    void logout(String refreshToken, String userId);

    String refreshAccessToken(String refreshToken) throws Exception;
}
